package com.skq.config;

import com.skq.interceptors.LoginInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @author skq
 * @data 2024/6/6
 */
@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Autowired
    private LoginInterceptor loginInterceptor;

    /**
     * 配置拦截器。
     * <p>
     * 本方法用于向Spring MVC框架注册登录拦截器，并指定不需要拦截的URL路径。
     * 登录拦截器的作用是拦截所有请求，除了登录、注册及相关静态资源请求，以实现权限验证和会话管理等功能。
     *
     * @param registry 拦截器注册表，用于添加和管理拦截器。
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 添加登录拦截器，并排除一些不需要拦截的URL路径
        registry.addInterceptor(loginInterceptor)
                .excludePathPatterns(
                        "/user/login", // 登录页面URL，允许直接访问
                        "/user/register", // 注册页面URL，允许直接访问
                        "/v3/**", // API版本3的所有URL，不进行拦截
                        "/webjars/**", // 静态资源路径，如WebJars中的JavaScript和CSS文件，不进行拦截
                        "/doc.html" // 文档页面URL，允许直接访问
                );
    }
}
